package com.ck.print.demo.printbridge;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 用于标记属性与properties配置项的映射关系
 */
@Target(ElementType.FIELD)  // 注解可用于字段上
@Retention(RetentionPolicy.RUNTIME)  // 运行时保留，可通过反射获取
public @interface ConfigProperty {
    /**
     * properties中的配置键，如"app.name"
     */
    String value();

    /**
     * 可选的默认值，如果配置中没有对应键则使用此值
     */
    String defaultValue() default "";

    /**
     * 是否是必须的，如果为true则配置中没有对应键则抛出异常
     */
    boolean isRequired() default false;
}